home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-06-28 | 1019 b | 47 lines | [TEXT/CWIE] |
- // WindowPile.cp
-
- #ifndef WindowPile_h
- #include "WindowPile.h"
- #endif
-
- WindowPile::WindowPile( Rectangle available, PointObject bestSize )
- : pile( available ),
- first( available.TopLeft() ),
- finished( 0 )
- {
- PointObject minimum = bestSize + PointObject( 11, 35 );
-
- PointObject availableSize = available.Size();
-
- uint16 horizontal = ( availableSize.h > minimum.h )
- ? availableSize.h / minimum.h
- : 1;
-
- uint16 vertical = ( availableSize.v > minimum.v )
- ? availableSize.v / minimum.v
- : 1;
-
- offset.h = availableSize.h / horizontal;
- offset.v = availableSize.v / vertical;
-
- stop.h = first.h + horizontal * offset.h;
- stop.v = first.v + vertical * offset.v;
-
- pile.right = pile.left + offset.h - 3;
- pile.bottom = pile.top + offset.v - 3;
- }
-
- void WindowPile::operator++()
- {
- Assert( Unfinished() );
-
- pile += PointObject( offset.h, 0 );
-
- if ( pile.left < stop.h )
- return;
-
- pile += PointObject( first.h - pile.left, offset.v );
-
- finished = pile.top >= stop.v;
- }
-